{
"cells": [
{
"cell_type": "markdown",
"id": "184fd7e8",
"metadata": {},
"source": [
"# Lecture Notes 14\n",
"\n",
"## Reading excel"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9dd64156",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f9897b9e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"0 dyer William Dyer\n",
"1 pb Frank Pabodie\n",
"2 lake Anderson Lake\n",
"3 roe Valentina Roerich\n",
"4 danforth Frank Danforth"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv('/home/python-lll/Downloads/survey-data - person.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d7ec4384",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"0 dyer William Dyer\n",
"1 pb Frank Pabodie\n",
"2 lake Anderson Lake\n",
"3 roe Valentina Roerich\n",
"4 danforth Frank Danforth"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_excel('/home/python-lll/Downloads/survey-data.xlsx')"
]
},
{
"cell_type": "markdown",
"id": "d387bb20",
"metadata": {},
"source": [
"* Use option `sheet_name=None` to get all tabs as a dictionary"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "956ac3db",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'person': id personal family\n",
" 0 dyer William Dyer\n",
" 1 pb Frank Pabodie\n",
" 2 lake Anderson Lake\n",
" 3 roe Valentina Roerich\n",
" 4 danforth Frank Danforth,\n",
" 'site': name lat long\n",
" 0 DR-1 -49.85 -128.57\n",
" 1 DR-3 -47.15 -126.72\n",
" 2 MSK-4 -48.87 -123.40,\n",
" 'survey': taken person quant reading\n",
" 0 619 dyer rad 9.82\n",
" 1 619 dyer sal 0.13\n",
" 2 622 dyer rad 7.80\n",
" 3 622 dyer sal 0.09\n",
" 4 734 pb rad 8.41\n",
" 5 734 lake sal 0.05\n",
" 6 734 pb temp -21.50\n",
" 7 735 pb rad 7.22\n",
" 8 735 NaN sal 0.06\n",
" 9 735 NaN temp -26.00\n",
" 10 751 pb rad 4.35\n",
" 11 751 pb temp -18.50\n",
" 12 751 lake sal 0.10\n",
" 13 752 lake rad 2.19\n",
" 14 752 lake sal 0.09\n",
" 15 752 lake temp -16.00\n",
" 16 752 roe sal 41.60\n",
" 17 837 lake rad 1.46\n",
" 18 837 lake sal 0.21\n",
" 19 837 roe sal 22.50\n",
" 20 844 roe rad 11.25,\n",
" 'visited': id site dated\n",
" 0 619 DR-1 1927-02-08\n",
" 1 622 DR-1 1927-02-10\n",
" 2 734 DR-3 1930-01-07\n",
" 3 735 DR-3 1930-01-12\n",
" 4 751 DR-3 1930-02-26\n",
" 5 752 DR-3 NaT\n",
" 6 837 MSK-4 1932-01-14\n",
" 7 844 DR-1 1932-03-22}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_excel('/home/python-lll/Downloads/survey-data.xlsx', sheet_name=None)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "92c3cebc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"0 dyer William Dyer\n",
"1 pb Frank Pabodie\n",
"2 lake Anderson Lake\n",
"3 roe Valentina Roerich\n",
"4 danforth Frank Danforth"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfs = pd.read_excel('/home/python-lll/Downloads/survey-data.xlsx', sheet_name=None)\n",
"dfs['person']"
]
},
{
"cell_type": "markdown",
"id": "b94f6b97",
"metadata": {},
"source": [
"## Reading google spreadsheets\n",
"\n",
"* Two steps: download and read from local disk witn `read_excel`\n",
"* One step: Modify url with to end with `.../export?format=xlsx` and pass to `read_excel`\n"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "ed86fcc8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"0 dyer William Dyer\n",
"1 pb Frank Pabodie\n",
"2 lake Anderson Lake\n",
"3 roe Valentina Roerich\n",
"4 danforth Frank Danforth"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfs = pd.read_excel('https://docs.google.com/spreadsheets/d/1VVw6O5ncoc2R-bBvu1Xc0PqylA6tKW2pyh5bDHhE_r8/export?format=xlsx', sheet_name=None)\n",
"dfs['person']"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "ebab6751",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['person', 'site', 'survey', 'visited'])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfs.keys()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "91b01d16",
"metadata": {},
"outputs": [],
"source": [
"person = dfs['person']\n",
"site = dfs['site']\n",
"survey = dfs['survey']\n",
"visited = dfs['visited']"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "88e2acaf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"0 dyer William Dyer\n",
"1 pb Frank Pabodie\n",
"2 lake Anderson Lake\n",
"3 roe Valentina Roerich\n",
"4 danforth Frank Danforth"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"person"
]
},
{
"cell_type": "markdown",
"id": "338e1797",
"metadata": {},
"source": [
"## Common operations with dataframes\n",
"### Select columns"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "1115796a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" personal family\n",
"0 William Dyer\n",
"1 Frank Pabodie\n",
"2 Anderson Lake\n",
"3 Valentina Roerich\n",
"4 Frank Danforth"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"person[['personal', 'family']]"
]
},
{
"cell_type": "markdown",
"id": "8df125da",
"metadata": {},
"source": [
"### Get unique values in a column"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "d10089ab",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" taken | \n",
" person | \n",
" quant | \n",
" reading | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" dyer | \n",
" rad | \n",
" 9.82 | \n",
"
\n",
" \n",
" 1 | \n",
" 619 | \n",
" dyer | \n",
" sal | \n",
" 0.13 | \n",
"
\n",
" \n",
" 2 | \n",
" 622 | \n",
" dyer | \n",
" rad | \n",
" 7.80 | \n",
"
\n",
" \n",
" 3 | \n",
" 622 | \n",
" dyer | \n",
" sal | \n",
" 0.09 | \n",
"
\n",
" \n",
" 4 | \n",
" 734 | \n",
" pb | \n",
" rad | \n",
" 8.41 | \n",
"
\n",
" \n",
" 5 | \n",
" 734 | \n",
" lake | \n",
" sal | \n",
" 0.05 | \n",
"
\n",
" \n",
" 6 | \n",
" 734 | \n",
" pb | \n",
" temp | \n",
" -21.50 | \n",
"
\n",
" \n",
" 7 | \n",
" 735 | \n",
" pb | \n",
" rad | \n",
" 7.22 | \n",
"
\n",
" \n",
" 8 | \n",
" 735 | \n",
" NaN | \n",
" sal | \n",
" 0.06 | \n",
"
\n",
" \n",
" 9 | \n",
" 735 | \n",
" NaN | \n",
" temp | \n",
" -26.00 | \n",
"
\n",
" \n",
" 10 | \n",
" 751 | \n",
" pb | \n",
" rad | \n",
" 4.35 | \n",
"
\n",
" \n",
" 11 | \n",
" 751 | \n",
" pb | \n",
" temp | \n",
" -18.50 | \n",
"
\n",
" \n",
" 12 | \n",
" 751 | \n",
" lake | \n",
" sal | \n",
" 0.10 | \n",
"
\n",
" \n",
" 13 | \n",
" 752 | \n",
" lake | \n",
" rad | \n",
" 2.19 | \n",
"
\n",
" \n",
" 14 | \n",
" 752 | \n",
" lake | \n",
" sal | \n",
" 0.09 | \n",
"
\n",
" \n",
" 15 | \n",
" 752 | \n",
" lake | \n",
" temp | \n",
" -16.00 | \n",
"
\n",
" \n",
" 16 | \n",
" 752 | \n",
" roe | \n",
" sal | \n",
" 41.60 | \n",
"
\n",
" \n",
" 17 | \n",
" 837 | \n",
" lake | \n",
" rad | \n",
" 1.46 | \n",
"
\n",
" \n",
" 18 | \n",
" 837 | \n",
" lake | \n",
" sal | \n",
" 0.21 | \n",
"
\n",
" \n",
" 19 | \n",
" 837 | \n",
" roe | \n",
" sal | \n",
" 22.50 | \n",
"
\n",
" \n",
" 20 | \n",
" 844 | \n",
" roe | \n",
" rad | \n",
" 11.25 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" taken person quant reading\n",
"0 619 dyer rad 9.82\n",
"1 619 dyer sal 0.13\n",
"2 622 dyer rad 7.80\n",
"3 622 dyer sal 0.09\n",
"4 734 pb rad 8.41\n",
"5 734 lake sal 0.05\n",
"6 734 pb temp -21.50\n",
"7 735 pb rad 7.22\n",
"8 735 NaN sal 0.06\n",
"9 735 NaN temp -26.00\n",
"10 751 pb rad 4.35\n",
"11 751 pb temp -18.50\n",
"12 751 lake sal 0.10\n",
"13 752 lake rad 2.19\n",
"14 752 lake sal 0.09\n",
"15 752 lake temp -16.00\n",
"16 752 roe sal 41.60\n",
"17 837 lake rad 1.46\n",
"18 837 lake sal 0.21\n",
"19 837 roe sal 22.50\n",
"20 844 roe rad 11.25"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey # which are the unique quantities we measure?"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "43127319",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 rad\n",
"1 sal\n",
"2 rad\n",
"3 sal\n",
"4 rad\n",
"5 sal\n",
"6 temp\n",
"7 rad\n",
"8 sal\n",
"9 temp\n",
"10 rad\n",
"11 temp\n",
"12 sal\n",
"13 rad\n",
"14 sal\n",
"15 temp\n",
"16 sal\n",
"17 rad\n",
"18 sal\n",
"19 sal\n",
"20 rad\n",
"Name: quant, dtype: object"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey['quant']"
]
},
{
"cell_type": "markdown",
"id": "377ace0e",
"metadata": {},
"source": [
"* Using the built-in `set`\n",
"* Using the pandas Series method `unique`"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "f3439099",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'rad', 'sal', 'temp'}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(survey['quant'])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "4e10ecab",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['rad', 'sal', 'temp'], dtype=object)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey['quant'].unique()"
]
},
{
"cell_type": "markdown",
"id": "17c3e04b",
"metadata": {},
"source": [
"* If we want to know how the values are distributed"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "9357b4ee",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sal 9\n",
"rad 8\n",
"temp 4\n",
"Name: quant, dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey['quant'].value_counts()"
]
},
{
"cell_type": "markdown",
"id": "7f251c9f",
"metadata": {},
"source": [
"### sorting by a column"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "8530fe21",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"0 dyer William Dyer\n",
"1 pb Frank Pabodie\n",
"2 lake Anderson Lake\n",
"3 roe Valentina Roerich\n",
"4 danforth Frank Danforth"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"person"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "be71ddec",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" personal | \n",
" family | \n",
"
\n",
" \n",
" \n",
" \n",
" 4 | \n",
" danforth | \n",
" Frank | \n",
" Danforth | \n",
"
\n",
" \n",
" 0 | \n",
" dyer | \n",
" William | \n",
" Dyer | \n",
"
\n",
" \n",
" 2 | \n",
" lake | \n",
" Anderson | \n",
" Lake | \n",
"
\n",
" \n",
" 1 | \n",
" pb | \n",
" Frank | \n",
" Pabodie | \n",
"
\n",
" \n",
" 3 | \n",
" roe | \n",
" Valentina | \n",
" Roerich | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id personal family\n",
"4 danforth Frank Danforth\n",
"0 dyer William Dyer\n",
"2 lake Anderson Lake\n",
"1 pb Frank Pabodie\n",
"3 roe Valentina Roerich"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"person.sort_values('family')"
]
},
{
"cell_type": "markdown",
"id": "a69bff74",
"metadata": {},
"source": [
"### filtering with boolean Series"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "ce25b567",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 2 | \n",
" 734 | \n",
" DR-3 | \n",
" 1930-01-07 | \n",
"
\n",
" \n",
" 3 | \n",
" 735 | \n",
" DR-3 | \n",
" 1930-01-12 | \n",
"
\n",
" \n",
" 4 | \n",
" 751 | \n",
" DR-3 | \n",
" 1930-02-26 | \n",
"
\n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
" 6 | \n",
" 837 | \n",
" MSK-4 | \n",
" 1932-01-14 | \n",
"
\n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"0 619 DR-1 1927-02-08\n",
"1 622 DR-1 1927-02-10\n",
"2 734 DR-3 1930-01-07\n",
"3 735 DR-3 1930-01-12\n",
"4 751 DR-3 1930-02-26\n",
"5 752 DR-3 NaT\n",
"6 837 MSK-4 1932-01-14\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "017a997d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 True\n",
"1 True\n",
"2 False\n",
"3 False\n",
"4 False\n",
"5 False\n",
"6 False\n",
"7 True\n",
"Name: site, dtype: bool"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"at_dr_1 = visited['site'] == 'DR-1'\n",
"at_dr_1"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "9866fa34",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"0 619 DR-1 1927-02-08\n",
"1 622 DR-1 1927-02-10\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited[at_dr_1]"
]
},
{
"cell_type": "markdown",
"id": "64329377",
"metadata": {},
"source": [
"* Combining with logical operators\n",
" * `|` for OR\n",
" * `&` for AND"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "76726c40",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 True\n",
"1 True\n",
"2 True\n",
"3 True\n",
"4 True\n",
"5 True\n",
"6 False\n",
"7 True\n",
"Name: site, dtype: bool"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"at_dr_1_or_3 = (visited['site'] == 'DR-1') | (visited['site'] == 'DR-3')\n",
"at_dr_1_or_3"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "f5ffbeb4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 2 | \n",
" 734 | \n",
" DR-3 | \n",
" 1930-01-07 | \n",
"
\n",
" \n",
" 3 | \n",
" 735 | \n",
" DR-3 | \n",
" 1930-01-12 | \n",
"
\n",
" \n",
" 4 | \n",
" 751 | \n",
" DR-3 | \n",
" 1930-02-26 | \n",
"
\n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"0 619 DR-1 1927-02-08\n",
"1 622 DR-1 1927-02-10\n",
"2 734 DR-3 1930-01-07\n",
"3 735 DR-3 1930-01-12\n",
"4 751 DR-3 1930-02-26\n",
"5 752 DR-3 NaT\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited[at_dr_1_or_3]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "298723a2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'DR-3'.startswith('DR')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "d2b3b483",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 True\n",
"1 True\n",
"2 True\n",
"3 True\n",
"4 True\n",
"5 True\n",
"6 False\n",
"7 True\n",
"Name: site, dtype: bool"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"at_dr = visited['site'].str.startswith('DR')\n",
"at_dr"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "8ea7eaf0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 2 | \n",
" 734 | \n",
" DR-3 | \n",
" 1930-01-07 | \n",
"
\n",
" \n",
" 3 | \n",
" 735 | \n",
" DR-3 | \n",
" 1930-01-12 | \n",
"
\n",
" \n",
" 4 | \n",
" 751 | \n",
" DR-3 | \n",
" 1930-02-26 | \n",
"
\n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"0 619 DR-1 1927-02-08\n",
"1 622 DR-1 1927-02-10\n",
"2 734 DR-3 1930-01-07\n",
"3 735 DR-3 1930-01-12\n",
"4 751 DR-3 1930-02-26\n",
"5 752 DR-3 NaT\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited[at_dr]"
]
},
{
"cell_type": "markdown",
"id": "4fcc5498",
"metadata": {},
"source": [
"### select all record from survey with salinity values outsited [0, 1]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "2d5eb34f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" taken | \n",
" person | \n",
" quant | \n",
" reading | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" dyer | \n",
" rad | \n",
" 9.82 | \n",
"
\n",
" \n",
" 1 | \n",
" 619 | \n",
" dyer | \n",
" sal | \n",
" 0.13 | \n",
"
\n",
" \n",
" 2 | \n",
" 622 | \n",
" dyer | \n",
" rad | \n",
" 7.80 | \n",
"
\n",
" \n",
" 3 | \n",
" 622 | \n",
" dyer | \n",
" sal | \n",
" 0.09 | \n",
"
\n",
" \n",
" 4 | \n",
" 734 | \n",
" pb | \n",
" rad | \n",
" 8.41 | \n",
"
\n",
" \n",
" 5 | \n",
" 734 | \n",
" lake | \n",
" sal | \n",
" 0.05 | \n",
"
\n",
" \n",
" 6 | \n",
" 734 | \n",
" pb | \n",
" temp | \n",
" -21.50 | \n",
"
\n",
" \n",
" 7 | \n",
" 735 | \n",
" pb | \n",
" rad | \n",
" 7.22 | \n",
"
\n",
" \n",
" 8 | \n",
" 735 | \n",
" NaN | \n",
" sal | \n",
" 0.06 | \n",
"
\n",
" \n",
" 9 | \n",
" 735 | \n",
" NaN | \n",
" temp | \n",
" -26.00 | \n",
"
\n",
" \n",
" 10 | \n",
" 751 | \n",
" pb | \n",
" rad | \n",
" 4.35 | \n",
"
\n",
" \n",
" 11 | \n",
" 751 | \n",
" pb | \n",
" temp | \n",
" -18.50 | \n",
"
\n",
" \n",
" 12 | \n",
" 751 | \n",
" lake | \n",
" sal | \n",
" 0.10 | \n",
"
\n",
" \n",
" 13 | \n",
" 752 | \n",
" lake | \n",
" rad | \n",
" 2.19 | \n",
"
\n",
" \n",
" 14 | \n",
" 752 | \n",
" lake | \n",
" sal | \n",
" 0.09 | \n",
"
\n",
" \n",
" 15 | \n",
" 752 | \n",
" lake | \n",
" temp | \n",
" -16.00 | \n",
"
\n",
" \n",
" 16 | \n",
" 752 | \n",
" roe | \n",
" sal | \n",
" 41.60 | \n",
"
\n",
" \n",
" 17 | \n",
" 837 | \n",
" lake | \n",
" rad | \n",
" 1.46 | \n",
"
\n",
" \n",
" 18 | \n",
" 837 | \n",
" lake | \n",
" sal | \n",
" 0.21 | \n",
"
\n",
" \n",
" 19 | \n",
" 837 | \n",
" roe | \n",
" sal | \n",
" 22.50 | \n",
"
\n",
" \n",
" 20 | \n",
" 844 | \n",
" roe | \n",
" rad | \n",
" 11.25 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" taken person quant reading\n",
"0 619 dyer rad 9.82\n",
"1 619 dyer sal 0.13\n",
"2 622 dyer rad 7.80\n",
"3 622 dyer sal 0.09\n",
"4 734 pb rad 8.41\n",
"5 734 lake sal 0.05\n",
"6 734 pb temp -21.50\n",
"7 735 pb rad 7.22\n",
"8 735 NaN sal 0.06\n",
"9 735 NaN temp -26.00\n",
"10 751 pb rad 4.35\n",
"11 751 pb temp -18.50\n",
"12 751 lake sal 0.10\n",
"13 752 lake rad 2.19\n",
"14 752 lake sal 0.09\n",
"15 752 lake temp -16.00\n",
"16 752 roe sal 41.60\n",
"17 837 lake rad 1.46\n",
"18 837 lake sal 0.21\n",
"19 837 roe sal 22.50\n",
"20 844 roe rad 11.25"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "278dc548",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 False\n",
"1 True\n",
"2 False\n",
"3 True\n",
"4 False\n",
"5 True\n",
"6 False\n",
"7 False\n",
"8 True\n",
"9 False\n",
"10 False\n",
"11 False\n",
"12 True\n",
"13 False\n",
"14 True\n",
"15 False\n",
"16 True\n",
"17 False\n",
"18 True\n",
"19 True\n",
"20 False\n",
"Name: quant, dtype: bool"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sal = survey['quant'] == 'sal'\n",
"sal"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "36d0a70e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 True\n",
"1 False\n",
"2 True\n",
"3 False\n",
"4 True\n",
"5 False\n",
"6 True\n",
"7 True\n",
"8 False\n",
"9 True\n",
"10 True\n",
"11 True\n",
"12 False\n",
"13 True\n",
"14 False\n",
"15 True\n",
"16 True\n",
"17 True\n",
"18 False\n",
"19 True\n",
"20 True\n",
"Name: reading, dtype: bool"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"out_of_range = (survey['reading'] > 1) | (survey['reading'] < 0) # | is a logical OR operation\n",
"out_of_range"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "4a171420",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 False\n",
"1 False\n",
"2 False\n",
"3 False\n",
"4 False\n",
"5 False\n",
"6 False\n",
"7 False\n",
"8 False\n",
"9 False\n",
"10 False\n",
"11 False\n",
"12 False\n",
"13 False\n",
"14 False\n",
"15 False\n",
"16 True\n",
"17 False\n",
"18 False\n",
"19 True\n",
"20 False\n",
"dtype: bool"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sal & out_of_range # & is a logical AND operation"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "1d57112e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" taken | \n",
" person | \n",
" quant | \n",
" reading | \n",
"
\n",
" \n",
" \n",
" \n",
" 16 | \n",
" 752 | \n",
" roe | \n",
" sal | \n",
" 41.6 | \n",
"
\n",
" \n",
" 19 | \n",
" 837 | \n",
" roe | \n",
" sal | \n",
" 22.5 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" taken person quant reading\n",
"16 752 roe sal 41.6\n",
"19 837 roe sal 22.5"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey[sal & out_of_range]"
]
},
{
"cell_type": "markdown",
"id": "fedf5e88",
"metadata": {},
"source": [
"### Add new columns\n",
"#### Provide temp readings in Fahrenheit"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "dcd2265b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6 -6.7\n",
"9 -14.8\n",
"11 -1.3\n",
"15 3.2\n",
"Name: reading, dtype: float64"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fahrenheit = survey[survey['quant'] == 'temp']['reading']*9/5 + 32\n",
"fahrenheit"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "b3dd4d40",
"metadata": {},
"outputs": [],
"source": [
"survey['fahrenheit'] = fahrenheit"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "c8f2003d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" taken | \n",
" person | \n",
" quant | \n",
" reading | \n",
" fahrenheit | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" dyer | \n",
" rad | \n",
" 9.82 | \n",
" NaN | \n",
"
\n",
" \n",
" 1 | \n",
" 619 | \n",
" dyer | \n",
" sal | \n",
" 0.13 | \n",
" NaN | \n",
"
\n",
" \n",
" 2 | \n",
" 622 | \n",
" dyer | \n",
" rad | \n",
" 7.80 | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" 622 | \n",
" dyer | \n",
" sal | \n",
" 0.09 | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" 734 | \n",
" pb | \n",
" rad | \n",
" 8.41 | \n",
" NaN | \n",
"
\n",
" \n",
" 5 | \n",
" 734 | \n",
" lake | \n",
" sal | \n",
" 0.05 | \n",
" NaN | \n",
"
\n",
" \n",
" 6 | \n",
" 734 | \n",
" pb | \n",
" temp | \n",
" -21.50 | \n",
" -6.7 | \n",
"
\n",
" \n",
" 7 | \n",
" 735 | \n",
" pb | \n",
" rad | \n",
" 7.22 | \n",
" NaN | \n",
"
\n",
" \n",
" 8 | \n",
" 735 | \n",
" NaN | \n",
" sal | \n",
" 0.06 | \n",
" NaN | \n",
"
\n",
" \n",
" 9 | \n",
" 735 | \n",
" NaN | \n",
" temp | \n",
" -26.00 | \n",
" -14.8 | \n",
"
\n",
" \n",
" 10 | \n",
" 751 | \n",
" pb | \n",
" rad | \n",
" 4.35 | \n",
" NaN | \n",
"
\n",
" \n",
" 11 | \n",
" 751 | \n",
" pb | \n",
" temp | \n",
" -18.50 | \n",
" -1.3 | \n",
"
\n",
" \n",
" 12 | \n",
" 751 | \n",
" lake | \n",
" sal | \n",
" 0.10 | \n",
" NaN | \n",
"
\n",
" \n",
" 13 | \n",
" 752 | \n",
" lake | \n",
" rad | \n",
" 2.19 | \n",
" NaN | \n",
"
\n",
" \n",
" 14 | \n",
" 752 | \n",
" lake | \n",
" sal | \n",
" 0.09 | \n",
" NaN | \n",
"
\n",
" \n",
" 15 | \n",
" 752 | \n",
" lake | \n",
" temp | \n",
" -16.00 | \n",
" 3.2 | \n",
"
\n",
" \n",
" 16 | \n",
" 752 | \n",
" roe | \n",
" sal | \n",
" 41.60 | \n",
" NaN | \n",
"
\n",
" \n",
" 17 | \n",
" 837 | \n",
" lake | \n",
" rad | \n",
" 1.46 | \n",
" NaN | \n",
"
\n",
" \n",
" 18 | \n",
" 837 | \n",
" lake | \n",
" sal | \n",
" 0.21 | \n",
" NaN | \n",
"
\n",
" \n",
" 19 | \n",
" 837 | \n",
" roe | \n",
" sal | \n",
" 22.50 | \n",
" NaN | \n",
"
\n",
" \n",
" 20 | \n",
" 844 | \n",
" roe | \n",
" rad | \n",
" 11.25 | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" taken person quant reading fahrenheit\n",
"0 619 dyer rad 9.82 NaN\n",
"1 619 dyer sal 0.13 NaN\n",
"2 622 dyer rad 7.80 NaN\n",
"3 622 dyer sal 0.09 NaN\n",
"4 734 pb rad 8.41 NaN\n",
"5 734 lake sal 0.05 NaN\n",
"6 734 pb temp -21.50 -6.7\n",
"7 735 pb rad 7.22 NaN\n",
"8 735 NaN sal 0.06 NaN\n",
"9 735 NaN temp -26.00 -14.8\n",
"10 751 pb rad 4.35 NaN\n",
"11 751 pb temp -18.50 -1.3\n",
"12 751 lake sal 0.10 NaN\n",
"13 752 lake rad 2.19 NaN\n",
"14 752 lake sal 0.09 NaN\n",
"15 752 lake temp -16.00 3.2\n",
"16 752 roe sal 41.60 NaN\n",
"17 837 lake rad 1.46 NaN\n",
"18 837 lake sal 0.21 NaN\n",
"19 837 roe sal 22.50 NaN\n",
"20 844 roe rad 11.25 NaN"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey"
]
},
{
"cell_type": "markdown",
"id": "12c81f14",
"metadata": {},
"source": [
"### Missing data"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "ad07779b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 2 | \n",
" 734 | \n",
" DR-3 | \n",
" 1930-01-07 | \n",
"
\n",
" \n",
" 3 | \n",
" 735 | \n",
" DR-3 | \n",
" 1930-01-12 | \n",
"
\n",
" \n",
" 4 | \n",
" 751 | \n",
" DR-3 | \n",
" 1930-02-26 | \n",
"
\n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
" 6 | \n",
" 837 | \n",
" MSK-4 | \n",
" 1932-01-14 | \n",
"
\n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"0 619 DR-1 1927-02-08\n",
"1 622 DR-1 1927-02-10\n",
"2 734 DR-3 1930-01-07\n",
"3 735 DR-3 1930-01-12\n",
"4 751 DR-3 1930-02-26\n",
"5 752 DR-3 NaT\n",
"6 837 MSK-4 1932-01-14\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited # find missing data"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "0bec0b4b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 False\n",
"1 False\n",
"2 False\n",
"3 False\n",
"4 False\n",
"5 True\n",
"6 False\n",
"7 False\n",
"Name: dated, dtype: bool"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"missing_date = visited['dated'].isna() # is not valid \n",
"missing_date"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "c310788b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"5 752 DR-3 NaT"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited[missing_date]"
]
},
{
"cell_type": "markdown",
"id": "2d906bf6",
"metadata": {},
"source": [
"### what is the most recent reading"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "be2e2017",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 2 | \n",
" 734 | \n",
" DR-3 | \n",
" 1930-01-07 | \n",
"
\n",
" \n",
" 3 | \n",
" 735 | \n",
" DR-3 | \n",
" 1930-01-12 | \n",
"
\n",
" \n",
" 4 | \n",
" 751 | \n",
" DR-3 | \n",
" 1930-02-26 | \n",
"
\n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
" 6 | \n",
" 837 | \n",
" MSK-4 | \n",
" 1932-01-14 | \n",
"
\n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"0 619 DR-1 1927-02-08\n",
"1 622 DR-1 1927-02-10\n",
"2 734 DR-3 1930-01-07\n",
"3 735 DR-3 1930-01-12\n",
"4 751 DR-3 1930-02-26\n",
"5 752 DR-3 NaT\n",
"6 837 MSK-4 1932-01-14\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "4fbbfa25",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
" 6 | \n",
" 837 | \n",
" MSK-4 | \n",
" 1932-01-14 | \n",
"
\n",
" \n",
" 4 | \n",
" 751 | \n",
" DR-3 | \n",
" 1930-02-26 | \n",
"
\n",
" \n",
" 3 | \n",
" 735 | \n",
" DR-3 | \n",
" 1930-01-12 | \n",
"
\n",
" \n",
" 2 | \n",
" 734 | \n",
" DR-3 | \n",
" 1930-01-07 | \n",
"
\n",
" \n",
" 1 | \n",
" 622 | \n",
" DR-1 | \n",
" 1927-02-10 | \n",
"
\n",
" \n",
" 0 | \n",
" 619 | \n",
" DR-1 | \n",
" 1927-02-08 | \n",
"
\n",
" \n",
" 5 | \n",
" 752 | \n",
" DR-3 | \n",
" NaT | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"7 844 DR-1 1932-03-22\n",
"6 837 MSK-4 1932-01-14\n",
"4 751 DR-3 1930-02-26\n",
"3 735 DR-3 1930-01-12\n",
"2 734 DR-3 1930-01-07\n",
"1 622 DR-1 1927-02-10\n",
"0 619 DR-1 1927-02-08\n",
"5 752 DR-3 NaT"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited.sort_values('dated', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "3a5b8d6a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" site | \n",
" dated | \n",
"
\n",
" \n",
" \n",
" \n",
" 7 | \n",
" 844 | \n",
" DR-1 | \n",
" 1932-03-22 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id site dated\n",
"7 844 DR-1 1932-03-22"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visited.sort_values('dated', ascending=False).head(1)"
]
},
{
"cell_type": "markdown",
"id": "2b2f4ba2",
"metadata": {},
"source": [
"### operation with grouping\n",
"#### what is the average measurement for each person and quantity"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "7c3f2483",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" taken | \n",
" person | \n",
" quant | \n",
" reading | \n",
" fahrenheit | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 619 | \n",
" dyer | \n",
" rad | \n",
" 9.82 | \n",
" NaN | \n",
"
\n",
" \n",
" 1 | \n",
" 619 | \n",
" dyer | \n",
" sal | \n",
" 0.13 | \n",
" NaN | \n",
"
\n",
" \n",
" 2 | \n",
" 622 | \n",
" dyer | \n",
" rad | \n",
" 7.80 | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" 622 | \n",
" dyer | \n",
" sal | \n",
" 0.09 | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" 734 | \n",
" pb | \n",
" rad | \n",
" 8.41 | \n",
" NaN | \n",
"
\n",
" \n",
" 5 | \n",
" 734 | \n",
" lake | \n",
" sal | \n",
" 0.05 | \n",
" NaN | \n",
"
\n",
" \n",
" 6 | \n",
" 734 | \n",
" pb | \n",
" temp | \n",
" -21.50 | \n",
" -6.7 | \n",
"
\n",
" \n",
" 7 | \n",
" 735 | \n",
" pb | \n",
" rad | \n",
" 7.22 | \n",
" NaN | \n",
"
\n",
" \n",
" 8 | \n",
" 735 | \n",
" NaN | \n",
" sal | \n",
" 0.06 | \n",
" NaN | \n",
"
\n",
" \n",
" 9 | \n",
" 735 | \n",
" NaN | \n",
" temp | \n",
" -26.00 | \n",
" -14.8 | \n",
"
\n",
" \n",
" 10 | \n",
" 751 | \n",
" pb | \n",
" rad | \n",
" 4.35 | \n",
" NaN | \n",
"
\n",
" \n",
" 11 | \n",
" 751 | \n",
" pb | \n",
" temp | \n",
" -18.50 | \n",
" -1.3 | \n",
"
\n",
" \n",
" 12 | \n",
" 751 | \n",
" lake | \n",
" sal | \n",
" 0.10 | \n",
" NaN | \n",
"
\n",
" \n",
" 13 | \n",
" 752 | \n",
" lake | \n",
" rad | \n",
" 2.19 | \n",
" NaN | \n",
"
\n",
" \n",
" 14 | \n",
" 752 | \n",
" lake | \n",
" sal | \n",
" 0.09 | \n",
" NaN | \n",
"
\n",
" \n",
" 15 | \n",
" 752 | \n",
" lake | \n",
" temp | \n",
" -16.00 | \n",
" 3.2 | \n",
"
\n",
" \n",
" 16 | \n",
" 752 | \n",
" roe | \n",
" sal | \n",
" 41.60 | \n",
" NaN | \n",
"
\n",
" \n",
" 17 | \n",
" 837 | \n",
" lake | \n",
" rad | \n",
" 1.46 | \n",
" NaN | \n",
"
\n",
" \n",
" 18 | \n",
" 837 | \n",
" lake | \n",
" sal | \n",
" 0.21 | \n",
" NaN | \n",
"
\n",
" \n",
" 19 | \n",
" 837 | \n",
" roe | \n",
" sal | \n",
" 22.50 | \n",
" NaN | \n",
"
\n",
" \n",
" 20 | \n",
" 844 | \n",
" roe | \n",
" rad | \n",
" 11.25 | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" taken person quant reading fahrenheit\n",
"0 619 dyer rad 9.82 NaN\n",
"1 619 dyer sal 0.13 NaN\n",
"2 622 dyer rad 7.80 NaN\n",
"3 622 dyer sal 0.09 NaN\n",
"4 734 pb rad 8.41 NaN\n",
"5 734 lake sal 0.05 NaN\n",
"6 734 pb temp -21.50 -6.7\n",
"7 735 pb rad 7.22 NaN\n",
"8 735 NaN sal 0.06 NaN\n",
"9 735 NaN temp -26.00 -14.8\n",
"10 751 pb rad 4.35 NaN\n",
"11 751 pb temp -18.50 -1.3\n",
"12 751 lake sal 0.10 NaN\n",
"13 752 lake rad 2.19 NaN\n",
"14 752 lake sal 0.09 NaN\n",
"15 752 lake temp -16.00 3.2\n",
"16 752 roe sal 41.60 NaN\n",
"17 837 lake rad 1.46 NaN\n",
"18 837 lake sal 0.21 NaN\n",
"19 837 roe sal 22.50 NaN\n",
"20 844 roe rad 11.25 NaN"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "64069a67",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"quant\n",
"rad 6.56\n",
"sal 7.20\n",
"temp -20.50\n",
"Name: reading, dtype: float64"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey.groupby('quant')['reading'].mean().round(2)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "c5333b4f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"person quant\n",
"dyer rad 8.81\n",
" sal 0.11\n",
"lake rad 1.82\n",
" sal 0.11\n",
" temp -16.00\n",
"pb rad 6.66\n",
" temp -20.00\n",
"roe rad 11.25\n",
" sal 32.05\n",
"Name: reading, dtype: float64"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"survey.groupby(['person', 'quant'])['reading'].mean().round(2)"
]
},
{
"cell_type": "markdown",
"id": "8497fea0",
"metadata": {},
"source": [
"## plotting reviewed\n",
"### with arrays"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "feb64b4a",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "56e9fe5d",
"metadata": {},
"outputs": [],
"source": [
"x = np.arange(0, 1, .1)\n",
"y1 = x**2\n",
"y2 = x**3"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "1ee517ee",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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LElJScXWJyUl0b179xL36dat2znb//zzz8TFxeHr61thtVYFZTkf4LgiMmjQID755BPddy1nzp6TkJAQNmzYwNq1awsfw4YNo0WLFqxdu5b4+PjKKt0jleV3pEePHhw4cIDjx48Xrtu2bRve3t40aNCgQuv1dGU5H9nZ2Xh7F/9atVgswJmr7HIeZrWcrQynu2VNnTrV2LRpkzFixAgjODjY2L17t2EYhjFq1ChjwIABhduf7tr7yCOPGJs2bTKmTp2qrr3lyNnz8cknnxg+Pj7G22+/baSmphY+jh07ZtZH8DjOnpOzqTdN+XL2fGRlZRkNGjQw/u///s/YuHGjsXDhQqNZs2bG0KFDzfoIHsXZ8/Hhhx8aPj4+xuTJk40dO3YYS5YsMeLi4owuXbqY9RHchkeHEcMwjLffftuIjo42/Pz8jM6dOxsLFy4sfO3uu+82Lr300mLbL1iwwOjUqZPh5+dnNGrUyJgyZUolV+zZnDkfl156qQGc87j77rsrv3AP5uzvSFEKI+XP2fOxefNm48orrzQCAwONBg0aGCNHjjSys7MruWrP5ez5eOONN4zWrVsbgYGBRmRkpHHnnXca+/btq+Sq3Y+XYejakYiIiJjHY9uMiIiIiHtQGBERERFTKYyIiIiIqRRGRERExFQKIyIiImIqhRERERExlcKIiIiImEphREREREylMCIiIiKmUhgRERERUymMiIiIiKkURkRERMRU/w9f39frZHqgcwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y1, label='square')\n",
"plt.plot(x, y2, label='cube')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"id": "d2b4fd02",
"metadata": {},
"source": [
"### with dataframes"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "847f9421",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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LElJScXWJyUl0b179xL36dat2znb//zzz8TFxeHr61thtVYFZTkf4LgiMmjQID755BPddy1nzp6TkJAQNmzYwNq1awsfw4YNo0WLFqxdu5b4+PjKKt0jleV3pEePHhw4cIDjx48Xrtu2bRve3t40aNCgQuv1dGU5H9nZ2Xh7F/9atVgswJmr7HIeZrWcrQynu2VNnTrV2LRpkzFixAgjODjY2L17t2EYhjFq1ChjwIABhduf7tr7yCOPGJs2bTKmTp2qrr3lyNnz8cknnxg+Pj7G22+/baSmphY+jh07ZtZH8DjOnpOzqTdN+XL2fGRlZRkNGjQw/u///s/YuHGjsXDhQqNZs2bG0KFDzfoIHsXZ8/Hhhx8aPj4+xuTJk40dO3YYS5YsMeLi4owuXbqY9RHchkeHEcMwjLffftuIjo42/Pz8jM6dOxsLFy4sfO3uu+82Lr300mLbL1iwwOjUqZPh5+dnNGrUyJgyZUolV+zZnDkfl156qQGc87j77rsrv3AP5uzvSFEKI+XP2fOxefNm48orrzQCAwONBg0aGCNHjjSys7MruWrP5ez5eOONN4zWrVsbgYGBRmRkpHHnnXca+/btq+Sq3Y+XYejakYiIiJjHY9uMiIiIiHtQGBERERFTKYyIiIiIqRRGRERExFQKIyIiImIqhRERERExlcKIiIiImEphREREREylMCIiIiKmUhgRERERUymMiIiIiKkURkRERMRU/w9f39frZHqgcwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pd.DataFrame({'square': y1, 'cube': y2}, index=x).plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b022c2c1",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}